- Pascal-FC for IBM PC compatibles - 
- Compiler Version P5.2

G L Davies  &  A Burns, University of Bradford

Compiler listing

    1     0 program badshare2;
    2     0 var
    3     0     par1,par2,par3: integer;   (* shared data *)
    4     0 
    5     0 
    6     0 process proc1;
    7     0 var
    8     0     i,count1 : integer;
    9     0 begin
   10     0     count1 := 0;
   11     3     repeat
   12     3         par1 := 1; par2 := 1; par3 := 1;    (* write to shared data *)
   13    12         for i:=1 to 100 do
   14    16             ;                                  (* delay *)
   15    17         count1 := count1 + 1;
   16    22     until (count1 > 100);
   17    26 end;    (* proc1 *)
   18    27 
   19    27 process proc2;
   20    27 var
   21    27     i,count2 : integer;
   22    27 begin
   23    27     count2 := 0;
   24    30     repeat
   25    30         par1 := 2; par2 := 2; par3 := 2;    (* write to shared data *)
   26    39         for i:=1 to 100 do
   27    43             ;                                  (* delay *)
   28    44         count2 := count2 + 1;
   29    49     until (count2 > 100);
   30    53 end;    (* proc2 *)
   31    54 
   32    54 process proc3;
   33    54 var
   34    54     a,b,c,count3 : integer;
   35    54 begin
   36    54     count3 := 0;
   37    57     repeat
   38    57         a := par1; b := par2; c := par3;
   39    66         writeln(a,' ',b,' ',c);
   40    77         count3 := count3 + 1;
   41    82     until (count3  > 100);
   42    86 end;     (* proc3 *)
   43    87 
   44    87 
   45    87 begin   (* MAIN *)
   46    87 
   47    87     cobegin
   48    88         proc2; proc1; proc3;
   49   100     coend;
   50   101 end.



Symbol table

    name       link      object       type         ref      nrm  lev  adr  aux

 45 _main        44     procedure   notyp           2     TRUE     0   87    0
 46 any           0     variable    synch           0     TRUE     1    5    0
 47 par1         46     variable    integer         0     TRUE     1    5    0
 48 par2         47     variable    integer         0     TRUE     1    6    0
 49 par3         48     variable    integer         0     TRUE     1    7    0
 50 proc1        49     variable    process         3     TRUE     1    8    0
 51 $            50     type id     process         3     TRUE     1    0    0
 52 i             0     variable    integer         0     TRUE     2    5    0
 53 count1       52     variable    integer         0     TRUE     2    6    0
 54 proc2        51     variable    process         4     TRUE     1    9    0
 55 $            54     type id     process         4     TRUE     1   27    0
 56 i             0     variable    integer         0     TRUE     2    5    0
 57 count2       56     variable    integer         0     TRUE     2    6    0
 58 proc3        55     variable    process         5     TRUE     1   10    0
 59 $            58     type id     process         5     TRUE     1   54    0
 60 a             0     variable    integer         0     TRUE     2    5    0
 61 b            60     variable    integer         0     TRUE     2    6    0
 62 c            61     variable    integer         0     TRUE     2    7    0
 63 count3       62     variable    integer         0     TRUE     2    8    0

Generated P-code

    0     ldadr        2         6          ;9
    1     ldcon.i      0         0          ;10
    2     store.i      0         0          ;10
    3     ldadr        1         5          ;11
    4     ldcon.i      0         1          ;12
    5     store.i      0         0          ;12
    6     ldadr        1         6          ;12
    7     ldcon.i      0         1          ;12
    8     store.i      0         0          ;12
    9     ldadr        1         7          ;12
   10     ldcon.i      0         1          ;12
   11     store.i      0         0          ;12
   12     ldadr        2         5          ;12
   13     ldcon.i      0         1          ;13
   14     ldcon.i      0       100          ;13
   15     for1u.i      0        17          ;13
   16     for2u.i      0        16          ;13
   17     ldadr        2         6          ;14
   18     ldval.i      2         6          ;15
   19     ldcon.i      0         1          ;15
   20     addop.i      0         0          ;15
   21     store.i      0         0          ;15
   22     ldval.i      2         6          ;16
   23     ldcon.i      0       100          ;16
   24     relgt.i      0         0          ;16
   25     jmpiz        0         3          ;16
   26     rproc        1         0          ;16
   27     ldadr        2         6          ;22
   28     ldcon.i      0         0          ;23
   29     store.i      0         0          ;23
   30     ldadr        1         5          ;24
   31     ldcon.i      0         2          ;25
   32     store.i      0         0          ;25
   33     ldadr        1         6          ;25
   34     ldcon.i      0         2          ;25
   35     store.i      0         0          ;25
   36     ldadr        1         7          ;25
   37     ldcon.i      0         2          ;25
   38     store.i      0         0          ;25
   39     ldadr        2         5          ;25
   40     ldcon.i      0         1          ;26
   41     ldcon.i      0       100          ;26
   42     for1u.i      0        44          ;26
   43     for2u.i      0        43          ;26
   44     ldadr        2         6          ;27
   45     ldval.i      2         6          ;28
   46     ldcon.i      0         1          ;28
   47     addop.i      0         0          ;28
   48     store.i      0         0          ;28
   49     ldval.i      2         6          ;29
   50     ldcon.i      0       100          ;29
   51     relgt.i      0         0          ;29
   52     jmpiz        0        30          ;29
   53     rproc        1         0          ;29
   54     ldadr        2         8          ;35
   55     ldcon.i      0         0          ;36
   56     store.i      0         0          ;36
   57     ldadr        2         5          ;37
   58     ldval.i      1         5          ;38
   59     store.i      0         0          ;38
   60     ldadr        2         6          ;38
   61     ldval.i      1         6          ;38
   62     store.i      0         0          ;38
   63     ldadr        2         7          ;38
   64     ldval.i      1         7          ;38
   65     store.i      0         0          ;38
   66     ldval.i      2         5          ;39
   67     wrval.i      0         0          ;39
   68     ldcon.c      0        32          ;39
   69     wrval.c      0         0          ;39
   70     ldval.i      2         6          ;39
   71     wrval.i      0         0          ;39
   72     ldcon.c      0        32          ;39
   73     wrval.c      0         0          ;39
   74     ldval.i      2         7          ;39
   75     wrval.i      0         0          ;39
   76     wrlin        0         0          ;39
   77     ldadr        2         8          ;39
   78     ldval.i      2         8          ;40
   79     ldcon.i      0         1          ;40
   80     addop.i      0         0          ;40
   81     store.i      0         0          ;40
   82     ldval.i      2         8          ;41
   83     ldcon.i      0       100          ;41
   84     relgt.i      0         0          ;41
   85     jmpiz        0        57          ;41
   86     rproc        1         0          ;41
   87     cobeg        0         0          ;42
   88     mkstk        1        55          ;47
   89     ldadr        1         9          ;47
   90     procv        0         0          ;47
   91     calls        1         4          ;47
   92     mkstk        1        51          ;48
   93     ldadr        1         8          ;48
   94     procv        0         0          ;48
   95     calls        1         4          ;48
   96     mkstk        1        59          ;48
   97     ldadr        1        10          ;48
   98     procv        0         0          ;48
   99     calls        1         4          ;48
  100     coend        0         0          ;48
  101     stopx        0         0          ;49
